1. Introducción

Column

Datos de la muestra

Muestra

Departamentos del Perú

22

Cantidad de personas entrevistadas

1535

Hipótesis

  • Problemática observada: A partir de los resultados electorales de la votación presidencial de 2021, se evidenció la diferencia de elección por parte de Lima y la costa norte en relación al resto de provincias y la sierra sur. En base a esto, las regiones que prefirieron al candidato Pedro Castillo corresponden con zonas donde se encuentran la menor cantidad de servicios, menor presencial estatal y a su vez un índice de probreza mayor; de la misma manera, las zonas con mayores servicios y riqueza optaron por la candidata Keiko Fujimori. El presente trabajo busca encontrar relación entre los factores socioeconómicos de las personas de dichas regiones al momento de manifestar su tendencia ideológica.

  • Pregunta de investigación: ¿Qué factores socioeconómicos influyen en la preferencia ideológica en Perú?

  • Justificación: Los resultados de esta investigación permitirán a los partidos políticos y candidatos ajustar sus estrategias políticas más precisas y adaptadas a las realidades socioeconómicas de los ciudadanos, lo cual ayudará a mejorar el nivel de la representación política y a diseñar políticas públicas que no solo sean más inclusivas, sino que cumplan con las expectativas de los peruanos, buscando así la cohesión social.

  • Hipótesis: En la presente investigación, nuestra hipótesis apunta a que las variables independientes como la situación económica de las personas, el área de residencia (rural o urbano), las opiniones sobre la calidad de servicios básicos (educación, salud y agua), el nivel de ingreso económico, el partido político por el cual votó en las elecciones de 2021 y el conocimiento político impactan en la variable dependiente de ideología política (Izquierda/Derecha).

Column {data-width=400}

Mapa de tendencia ideológica por departamento

Tendencia ideológica en porcentaje por región

2. Análisis univariado

Column {data-width=500}

Gráfico pie de Ideología

Tabla de frecuencias (sin NA)

Column

Variables de control

Variables independientes

3. Pruebas estadísticas

Column {data-width=500}

Chi cuadrado: ideología y género

Tabla de Contingencia: Ideología y género
GENERO Hombre Mujer
Izquierda Izquierda 454 487
Derecha Derecha 302 245
Chi cuadrado: ideología y género
Estimación Valor
X-squared Estadística Chi-cuadrado 6.4358711
Valor p 0.0111838

Chi cuadrado: ideología y situación económica personal

Tabla de Contingencia: Ideología y Situación económica
Peor Igual Mejor
Izquierda 607 276 58
Derecha 312 185 50
Chi cuadrado: ideología y situación económica personal
Estimación Valor
X-squared Estadística Chi-cuadrado 9.5987468
Valor p 0.0082349

Chi cuadrado: ideología e ingreso mensual

Tabla de Contingencia: Ideología e Ingreso mensual
Menos s/200 Entre S/201 - S/350 Entre S/351 - S/635 Entre S/636 – S/800 Entre S/801 – S/980 Entre S/981 – S/1,100 Entre S/1,101 – S/ 1,294 Entre S/1,295 – S/1,500 Entre S/1,501 – S/1,611 Entre S/1,612 – S/ 1,962 Entre S/1,963 – S/2,399 Entre S/2,400 – S/2,929 Entre S/2,930 – S/3,708 Entre S/3,709 – S/5,136 Más de S/5,136
Izquierda 74 67 78 82 95 100 72 75 38 26 38 49 31 22 21
Derecha 45 24 42 40 41 46 46 29 25 28 40 28 31 26 33
Chi cuadrado: ideología e ingreso mensual
Estimación Valor
X-squared Estadística Chi-cuadrado 9.5987468
Valor p 0.0082349

Chi cuadrado: ideología y voto en 2021

Tabla de Contingencia: Ideología y Voto 2021
Acción Popular Alianza para el Progreso Anulado Avanza País Blanco Fuerza Popular Nuevo Perú Otro Partido Morado Perú Libre Podemos Perú Renovación Popular Victoria Nacional
Izquierda 18 3 31 17 38 165 9 17 4 361 6 23 3
Derecha 7 3 20 34 15 113 1 9 1 147 4 32 4
Chi cuadrado: ideología y voto en 2021
Estimación Valor
X-squared Estadística Chi-cuadrado 53.9386302
Valor p 0.0000003

4. Regresiones

Column {data-width=500}

Regresión Logística: Variables de control

Resumen del Modelo Logístico (Ideología, Edad y Género)
Coeficiente Error_Estandar Valor_z p_value
EDAD -0.0015 0.0036 -0.4143 0.67864
GENEROHombre -0.3502 0.1572 -2.2271 0.02594
GENEROMujer -0.6306 0.1569 -4.0178 5.873e-05

Column {data-width=500}

Regresión Logística: Variables Independientes

Resumen del Modelo Logístico (Ideología, Área y variables de control)
Coeficiente Error_Estandar Valor_z p_value AIC
AREAUrbano -0.2757 0.1612 -1.7100 0.087268 1954
AREARural -0.5456 0.1842 -2.9624 0.003053 1954
GENEROMujer -0.2837 0.1081 -2.6235 0.008704 1954
EDAD -0.0018 0.0036 -0.5060 0.612885 1954
Resumen del Modelo Logístico (Ideología, Voto en Elecciones Generales 2021, Área y variables de control)
Coeficiente Error_Estandar Valor_z p_value AIC
VOTO21Acción Popular -0.6944 0.4909 -1.4144 0.157243 1387
VOTO21Alianza para el Progreso 0.4172 0.8420 0.4955 0.620276 1387
VOTO21Anulado -0.1084 0.3546 -0.3057 0.759816 1387
VOTO21Avanza País 0.8977 0.3411 2.6316 0.008498 1387
VOTO21Blanco -0.6069 0.3623 -1.6750 0.093939 1387
VOTO21Fuerza Popular -0.0597 0.2457 -0.2429 0.808116 1387
VOTO21Nuevo Perú -1.9658 1.0673 -1.8418 0.065511 1387
VOTO21Otro -0.5086 0.4707 -1.0805 0.279907 1387
VOTO21Partido Morado -1.1017 1.1315 -0.9736 0.330238 1387
VOTO21Perú Libre -0.5950 0.2339 -2.5440 0.010961 1387
VOTO21Podemos Perú -0.2137 0.6725 -0.3178 0.750655 1387
VOTO21Renovación Popular 0.5062 0.3223 1.5704 0.116331 1387
VOTO21Victoria Nacional 0.6250 0.7944 0.7868 0.431422 1387
AREARural -0.1331 0.1601 -0.8314 0.405747 1387
GENEROMujer -0.3034 0.1342 -2.2601 0.023813 1387
EDAD -0.0030 0.0046 -0.6504 0.515451 1387

5. Análisis factorial

Column {data-width=500}

Correlación de las variables de opinión

Column {data-width=500}

Resultado KMO

Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = corMatrix)
Overall MSA =  0.58
MSA for each item = 
 OPI_EDU_p  OPI_SAL_p OPI_AGUA_p 
      0.59       0.55       0.63 

Prueba de matriz de identidad y matriz singular.

Prueba de matriz de identidad:
[1] FALSE

Prueba de matriz singular:

[1] FALSE

Cantidad de factores recomendados

Parallel analysis suggests that the number of factors =  1  and the number of components =  NA 

Resultados del EFA

Tabla de correlación

OPI_EDU_p OPI_SAL_p OPI_AGUA_p
OPI_EDU_p 1.00 0.53 0.24
OPI_SAL_p 0.53 1.00 0.45
OPI_AGUA_p 0.24 0.45 1.00

6. Análisis conglomerado

Column {data-width=500}

Datos

N° de clusters PAM

N° clusters AGNES

N° clusters DIANA

Column {data-width=500}

Orden clusters PAM

  pam  OPI_EDU_p  OPI_SAL_p OPI_AGUA_p
1   1  0.4118486  0.3245601  0.4824606
2   2 -0.8825328 -0.6954859 -1.0338442

Silhouette PAM

Orden clusters AGNES

  agnes OPI_EDU_p  OPI_SAL_p OPI_AGUA_p      pam
1     1  1.243052  0.9279406  0.3826528 1.000000
2     2 -0.580091 -0.4330389 -0.1785713 1.466667

Silhouette AGNES

Orden clusters DIANA

  diana OPI_EDU_p  OPI_SAL_p OPI_AGUA_p      pam agnes
1     1  1.243052  0.9279406  0.3826528 1.000000     1
2     2 -0.580091 -0.4330389 -0.1785713 1.466667     2

Silhouette DIANA

7. Conclusiones

Row

Porcentaje de personas que se identifican con tendencia política de izquierda

Porcentaje de personas que consideran que su situación económica ha empeorado

Porcentaje de personas no pertenecientes a Lima que presentan tendencia hacia la izquierda

Row

Porcentaje de mujeres que presentan tendencia hacia la derecha

Porcentaje de personas con mayores ingresos con tendencia hacia la izquierda

Porcentaje de personas con menores ingresos con tendencia hacia la izquierda

---
title: "¿Lo material determina la conciencia?: factores socioeconómicos y su impacto en la ideología política"
author: "Andrea Luján & Ricardo Asenjo"
output:
  flexdashboard::flex_dashboard:
    theme: united
    source_code: embed
---

1. Introducción {data-icon="fa-solid fa-lightbulb"}
===================================== 

Column {data-width=400}
-----------------------------------------------------------------------

```{r setup, include=FALSE}
library(stringi)
library(flexdashboard)
library(ggplot2)
library(dplyr)
library(ggthemes)
library(kableExtra)
library(plotly)
library(fontawesome)
library(rio)
library(DT)
library(vtable)
library(reshape2) 
library(tmap)
library(tidyverse)
library(modelsummary)
library(sf) 
library(psych)
library(matrixcalc)
htmltools::tagList(fontawesome::fa_html_dependency())

computeMuestra = function(...) return("Muestra")
computeDepartamentos = function(...) return(22)
computePersonas = function(...) return(1535)

setwd("C:/Users/RICARDO/OneDrive/Escritorio/Trabajo Final estadística")

##Creamos el dataframe

dataperu=import("Copia de datafinal.xlsx")

dataperu$IDEOLOGIA <- factor(dataperu$IDEOLOGIA, levels = c(0, 1), labels = c("Izquierda", "Derecha"))

tabla_distribucion1 <- table(dataperu$IDEOLOGIA , dataperu$REGION)

data.idio_prov_i <- as.data.frame(tabla_distribucion1)

colnames(data.idio_prov_i) <- c("Tendencia", "Region", "Frecuencia")
data.idio_prov_por_i <- data.idio_prov_i %>%
  group_by(Region, Tendencia) %>%
  summarise(Frecuencia = sum(Frecuencia)) %>%  
  mutate(Total_region = sum(Frecuencia),  
         Porcentaje = ifelse(Tendencia == "Izquierda", Frecuencia / Total_region * 100, NA))

data.idio_prov_por_izq<- data.idio_prov_por_i %>%
  filter(Tendencia == "Izquierda")##Creamos el dataframe

dataperu=import("Copia de datafinal.xlsx")

dataperu$IDEOLOGIA <- factor(dataperu$IDEOLOGIA, levels = c(0, 1), labels = c("Izquierda", "Derecha"))

tabla_distribucion1 <- table(dataperu$IDEOLOGIA , dataperu$REGION)

data.idio_prov <- as.data.frame(tabla_distribucion1)

colnames(data.idio_prov) <- c("Tendencia", "Region", "Frecuencia")
data.idio_prov_por_i <- data.idio_prov %>%
  group_by(Region, Tendencia) %>%
  summarise(Frecuencia = sum(Frecuencia)) %>%  
  mutate(Total_region = sum(Frecuencia),  
         Porcentaje = ifelse(Tendencia == "Izquierda", Frecuencia / Total_region * 100, NA))

data.idio_prov_por_izq<- data.idio_prov_por_i %>%
  filter(Tendencia == "Izquierda")
```

### Datos de la muestra
```{r}
muestra = computeMuestra()
valueBox(muestra, icon = "fa-solid fa-flask")
```

### Departamentos del Perú 

```{r}
departamentos = computeDepartamentos()
valueBox(departamentos, icon = "fas fa-earth-americas")
```

### Cantidad de personas entrevistadas

```{r}
personas = computePersonas()
valueBox(personas, icon = "fa-solid fa-person")
```

### Hipótesis

* **Problemática observada:** 
A partir de los resultados electorales de la votación presidencial de 2021, se evidenció la diferencia de elección por parte de Lima y la costa norte en relación al resto de provincias y la sierra sur. En base a esto, las regiones que prefirieron al candidato Pedro Castillo corresponden con zonas donde se encuentran la menor cantidad de servicios, menor presencial estatal y a su vez un índice de probreza mayor; de la misma manera, las zonas con mayores servicios y riqueza optaron por la candidata Keiko Fujimori. El presente trabajo busca encontrar relación entre los factores socioeconómicos de las personas de dichas regiones al momento de manifestar su tendencia ideológica.

* **Pregunta de investigación:**
¿Qué factores socioeconómicos influyen en la preferencia ideológica en Perú?

* **Justificación:**
Los resultados de esta investigación permitirán a los partidos políticos y candidatos ajustar sus estrategias políticas más precisas y adaptadas a las realidades socioeconómicas de los ciudadanos, lo cual ayudará a mejorar el nivel de la representación política y a diseñar políticas públicas que no solo sean más inclusivas, sino que cumplan con las expectativas de los peruanos, buscando así la cohesión social.

* **Hipótesis:**
En la presente investigación, nuestra hipótesis apunta a que las variables independientes como la situación económica de las personas, el área de residencia (rural o urbano), las opiniones sobre la calidad de servicios básicos (educación, salud y agua), el nivel de ingreso económico, el partido político por el cual votó en las elecciones de 2021 y el conocimiento político impactan en la variable dependiente de ideología política (Izquierda/Derecha). 


Column {data-width=400}{.tabset}
-----------------------------------------------------------------------

### Mapa de tendencia ideológica por departamento

```{r}
df_mapa <- data.idio_prov_por_izq[, c("Region", "Tendencia", "Porcentaje")]
nuevas_filas <- data.frame(
  Region = c("TUMBES", "MADRE DE DIOS"),
  Tendencia = c(NA, NA),
  Porcentaje = c(NA, NA)
)
df_mapa$Region <- toupper(df_mapa$Region)
df_mapa$Region <- stri_trans_general(df_mapa$Region, "Latin-ASCII")

df_mapa <- rbind(df_mapa, nuevas_filas)

map1 = df_mapa %>%
  group_by(Region,Porcentaje)

mapDEP1=sf::read_sf("DEPARTAMENTO.shp")

mapDEP3=merge(mapDEP1,map1,by.x='DEPARTAMEN',by.y='Region', all.x = T)
```

```{r}
tmap_mode("view") #Visualizamos el nuevo dataframe

mapDEP3$Porcentaje_rounded <- round(mapDEP3$Porcentaje, 2)
mapDEP3$Porcentaje_rounded[is.na(mapDEP3$Porcentaje_rounded)] <- "No disponible"

tm_shape(mapDEP3) +
  tm_fill("Porcentaje", id="DEPARTAMEN", palette = "Reds", style="quantile", title="% tendencia hacia la izquierda",popup.vars = c("DEPARTAMEN", "Porcentaje_rounded")) +
  tm_borders("grey25", alpha=.05) +
  tm_layout("Porcentaje de tendencia ideológica hacia la izquierda política por región", main.title.position = "center") + tm_view(view.legend.position = c("left","bottom")) 

tmap_last <- tmap_last()
```

### Tendencia ideológica en porcentaje por región

```{r}
data.idio_prov_por <- data.idio_prov %>%
  group_by(Region, Tendencia) %>%
  summarise(Frecuencia = sum(Frecuencia)) %>%  
  mutate(Total_region = sum(Frecuencia),
    Porcentaje = (Frecuencia / Total_region) * 100  
  )

data.idio_prov_por$Region <- factor(data.idio_prov_por$Region, 
                                    levels = data.idio_prov_por %>%
                                      filter(Tendencia == "Izquierda") %>%
                                      arrange(Porcentaje) %>%
                                      pull(Region))

graf60 = ggplot(data.idio_prov_por, aes(x = reorder(Region, Porcentaje), y = Porcentaje, fill = Tendencia)) +
  geom_bar(stat = "identity", width = 0.5) + 
  coord_flip() +  
  labs(title = "Tendencia ideológica por región",
       x = "Región", y = "Porcentaje",
       fill = "Tendencia ideológica",
       caption = "Barómetro de las Américas por LAPOP, 2023") +
    ylim(0, 100) +
  theme_classic() +
  theme(axis.text.x = element_text(angle = 0, hjust = 1))

graf60 + theme_fivethirtyeight()
gg60 <- ggplotly(graf60)
gg60

```


2. Análisis univariado {data-icon="fa-solid fa-chart-simple"}
===================================== 

Column {data-width=500}{.tabset}
-----------------------------------------------------------------------

### Gráfico pie de Ideología

```{r}
pie_data <- dataperu %>% #dataframe
  group_by(IDEOLOGIA) %>%
  summarise(Frecuencia = n()) %>%
  mutate(Porcentaje = Frecuencia / sum(Frecuencia) * 100)

pie_data_na <- pie_data %>% #quitamos na
  filter(!is.na(IDEOLOGIA))


graf_pie_plotly <- plot_ly(data = pie_data_na, #hacemos gráfico
                           labels = ~IDEOLOGIA, 
                           values = ~Frecuencia,   
                           type = 'pie', 
                           textinfo = 'none',  
                           hoverinfo = 'label+percent+value',
                           marker = list(colors = c('#ff9999', '#66b3ff')))%>%
  layout(title = "Gráfico pie de la variable Ideología",
         showlegend = TRUE)

graf_pie_plotly
```

### Tabla de frecuencias (sin NA)

```{r}
v_dep <- dataperu %>%
  select(IDEOLOGIA)

sumtable(v_dep, out = "return")%>%
  datatable(options = 
              list(c(scrollX=TRUE)))
```

Column {data-width=500}
-----------------------------------------------------------------------

### Variables de control
```{r}
v_ctrl <- dataperu %>%
  select(EDAD, GENERO)
```

```{r}
sumtable(v_ctrl, out = "return")%>%
  datatable(options = 
              list(c(scrollX=TRUE)))
```

### Variables independientes

```{r}
dataperu$CON_POL <- factor(dataperu$CON_POL,
                                      levels = c(0, 1, 2, 3, 4),
                                      labels = c("Muy bajo", "Bajo", "Ni alto ni bajo", "Alto", "Muy alto"))
```

```{r}
v_ind <- dataperu %>%
  select(SIT_ECO, AREA, INGRESO, CON_POL, VOTO21)
```

```{r}
sumtable(v_ind, out = "return")%>%
  datatable(options = 
              list(c(scrollX=TRUE)))
```


3. Pruebas estadísticas {data-icon="fa-solid fa-check"}
===================================== 

Column {data-width=500}{.tabset}
-----------------------------------------------------------------------

### Chi cuadrado: ideología y género

```{r}
dataperu$GENERO <- factor(dataperu$GENERO, levels = c(0, 1), labels = c("Hombre", "Mujer"))
tabla_frecuencias1 <- table(dataperu$IDEOLOGIA, dataperu$GENERO) #Primero la tabla

tablachi1 <- matrix(c(454, 487, 302, 245), nrow = 2, byrow = TRUE,
                dimnames = list("IDEOLOGIA" = c("Izquierda", "Derecha"),
                                "GENERO" = c("Hombre", "Mujer"))) #Luego la matriz

df_tablachi1 <- as.data.frame(tablachi1) #Dataframe
df_tablachi1$GENERO <- rownames(df_tablachi1)
df_tablachi1 <- df_tablachi1[, c("GENERO", "Hombre", "Mujer")]

df_tablachi1 %>% #Visualización
  kable(caption = "Tabla de Contingencia: Ideología y género") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, position = "center",font_size = 14) %>%
  column_spec(1, bold = TRUE) %>% 
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")%>% 
  column_spec(2:3, width = "6em")
```

```{r}
resultadochi1 <- chisq.test(tablachi1)#La prueba chi

vis_chi1 <- data.frame( #El DF de la prueba
  Estimación = c("Estadística Chi-cuadrado", "Valor p"),
  Valor = c(resultadochi1$statistic, resultadochi1$p.value)
)

vis_chi1 %>% #La visualización
  kable(caption = "Chi cuadrado: ideología y género") %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE, position = "center") %>%
   column_spec(1, bold = TRUE) %>%  
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")
```

### Chi cuadrado: ideología y situación económica personal

```{r}
dataperu$SIT_ECO <- factor(dataperu$SIT_ECO, 
                                         levels = c(0, 1, 2), 
                                         labels = c("Peor", "Igual", "Mejor"))

tabla_frecuencias2 <- table(dataperu$IDEOLOGIA, dataperu$SIT_ECO)

tablachi2 <- matrix(c(607, 276, 58,  
                              312, 185, 50),  
                            nrow = 2, byrow = TRUE,
                            dimnames = list("IDEOLOGIA" = c("Izquierda", "Derecha"),
                                            "SITUACION ECONOMICA" = c("Peor", "Igual", "Mejor")))

df_tablachi2 <- as.data.frame(tablachi2) #Dataframe
df_tablachi2$SIT_ECO <- rownames(df_tablachi2)
df_tablachi2 <- df_tablachi2[, c("Peor", "Igual", "Mejor")]

df_tablachi2 %>% #Visualización
  kable(caption = "Tabla de Contingencia: Ideología y Situación económica") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, position = "center",font_size = 14) %>%
  column_spec(1, bold = TRUE) %>% 
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")%>% 
  column_spec(2:3, width = "6em")
```

```{r}
resultadochi2 <- chisq.test(tablachi2)

vis_chi2 <- data.frame( #El DF de la prueba
  Estimación = c("Estadística Chi-cuadrado", "Valor p"),
  Valor = c(resultadochi2$statistic, resultadochi2$p.value)
)

vis_chi2 %>% #La visualización
  kable(caption = "Chi cuadrado: ideología y situación económica personal") %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE, position = "center") %>%
   column_spec(1, bold = TRUE) %>%  
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")
```

### Chi cuadrado: ideología e ingreso mensual

```{r}
dataperu$INGRESO <- factor(dataperu$INGRESO,
                      levels = c(1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115),
                      labels = c("Menos s/200", "Entre S/201 - S/350", "Entre S/351 - S/635", 
                                 "Entre S/636 – S/800", "Entre S/801 – S/980", "Entre S/981 – S/1,100",
                                 "Entre S/1,101 – S/ 1,294", "Entre S/1,295 – S/1,500", "Entre S/1,501 – S/1,611",
                                 "Entre S/1,612 – S/ 1,962", "Entre S/1,963 – S/2,399", "Entre S/2,400 – S/2,929", 
                                 "Entre S/2,930 – S/3,708", "Entre S/3,709 – S/5,136", "Más de S/5,136"))

tabla_frecuencias3 <- table(dataperu$IDEOLOGIA, dataperu$INGRESO)

tablachi3 <- matrix(c(74, 67, 78, 82, 95, 100, 72, 75, 38, 26, 38, 49, 31, 22, 21, 45, 24, 42, 40, 41, 46, 46, 29, 25, 28, 40, 28, 31, 26, 33),  
                            nrow = 2, byrow = TRUE,
                            dimnames = list("IDEOLOGIA" = c("Izquierda", "Derecha"),
                                            "AREA" = c("Menos s/200", "Entre S/201 - S/350", "Entre S/351 - S/635", 
                                 "Entre S/636 – S/800", "Entre S/801 – S/980", "Entre S/981 – S/1,100",
                                 "Entre S/1,101 – S/ 1,294", "Entre S/1,295 – S/1,500", "Entre S/1,501 – S/1,611",
                                 "Entre S/1,612 – S/ 1,962", "Entre S/1,963 – S/2,399", "Entre S/2,400 – S/2,929", 
                                 "Entre S/2,930 – S/3,708", "Entre S/3,709 – S/5,136", "Más de S/5,136")))


df_tablachi3 <- as.data.frame(tablachi3) #Dataframe
df_tablachi3$INGRESO <- rownames(df_tablachi3)
df_tablachi3 <- df_tablachi3[, c("Menos s/200", "Entre S/201 - S/350", "Entre S/351 - S/635", 
                                 "Entre S/636 – S/800", "Entre S/801 – S/980", "Entre S/981 – S/1,100",
                                 "Entre S/1,101 – S/ 1,294", "Entre S/1,295 – S/1,500", "Entre S/1,501 – S/1,611",
                                 "Entre S/1,612 – S/ 1,962", "Entre S/1,963 – S/2,399", "Entre S/2,400 – S/2,929", 
                                 "Entre S/2,930 – S/3,708", "Entre S/3,709 – S/5,136", "Más de S/5,136")]

df_tablachi3 %>% #Visualización
  kable(caption = "Tabla de Contingencia: Ideología e Ingreso mensual") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, position = "center",font_size = 14) %>%
  column_spec(1, bold = TRUE) %>% 
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")%>% 
  column_spec(2:3, width = "6em")
```

```{r}
resultadochi3 <- chisq.test(tablachi3)

vis_chi3 <- data.frame( #El DF de la prueba
  Estimación = c("Estadística Chi-cuadrado", "Valor p"),
  Valor = c(resultadochi2$statistic, resultadochi2$p.value)
)

vis_chi3 %>% #La visualización
  kable(caption = "Chi cuadrado: ideología e ingreso mensual") %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE, position = "center") %>%
   column_spec(1, bold = TRUE) %>%  
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")
```

### Chi cuadrado: ideología y voto en 2021

```{r}
tabla_frecuencias4 <- table(dataperu$IDEOLOGIA, dataperu$VOTO21)

tablachi4 <- matrix(c(18, 3, 31, 17, 38, 165, 9, 17, 4, 361, 6, 23, 3,
                      7, 3, 20, 34, 15, 113, 1, 9, 1, 147, 4, 32, 4),  
                            nrow = 2, byrow = TRUE,
                            dimnames = list("IDEOLOGIA" = c("Izquierda", "Derecha"),
                                            "VOTO EN 2021" = c("Acción Popular", "Alianza para el Progreso", "Anulado", "Avanza País", "Blanco", "Fuerza Popular", "Nuevo Perú", "Otro", "Partido Morado", "Perú Libre", "Podemos Perú", "Renovación Popular", "Victoria Nacional")))

tablachi4 <- matrix(c(18, 3, 31, 17, 38, 165, 9, 17, 4, 361, 6, 23, 3,
                      7, 3, 20, 34, 15, 113, 1, 9, 1, 147, 4, 32, 4),  
                            nrow = 2, byrow = TRUE,
                             dimnames = list("IDEOLOGIA" = c("Izquierda", "Derecha"),
                                            "VOTO EN 2021" = c("Acción Popular", "Alianza para el Progreso", "Anulado", "Avanza País", "Blanco", "Fuerza Popular", "Nuevo Perú", "Otro", "Partido Morado", "Perú Libre", "Podemos Perú", "Renovación Popular", "Victoria Nacional")))

df_tablachi4 <- as.data.frame(tablachi4) #Dataframe
df_tablachi4$VOTO21<- rownames(df_tablachi4)
df_tablachi4 <- df_tablachi4[, c("Acción Popular", "Alianza para el Progreso", "Anulado", "Avanza País", "Blanco", "Fuerza Popular", "Nuevo Perú", "Otro", "Partido Morado", "Perú Libre", "Podemos Perú", "Renovación Popular", "Victoria Nacional")]

df_tablachi4 %>% #Visualización
  kable(caption = "Tabla de Contingencia: Ideología y Voto 2021") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, position = "center",font_size = 14) %>%
  column_spec(1, bold = TRUE) %>% 
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")%>% 
  column_spec(2:3, width = "6em")
```

```{r}
resultadochi4 <- chisq.test(tablachi4)

vis_chi4 <- data.frame( #El DF de la prueba
  Estimación = c("Estadística Chi-cuadrado", "Valor p"),
  Valor = c(resultadochi4$statistic, resultadochi4$p.value)
)

vis_chi4 %>% #La visualización
  kable(caption = "Chi cuadrado: ideología y voto en 2021") %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE, position = "center") %>%
   column_spec(1, bold = TRUE) %>%  
  row_spec(0, bold = TRUE, color = "Black", background = "#eec1b1")
```

4. Regresiones {data-icon="fa-solid fa-wave-square"}
===================================== 

Column {data-width=500}{.tabset}
-----------------------------------------------------------------------

### Regresión Logística: Variables de control

```{r}
modelo_logistico1 <- glm(IDEOLOGIA ~ EDAD + GENERO - 1, 
                        data = dataperu, 
                        family = binomial)
summary_modelo1 <- summary(modelo_logistico1)

coeficientes1 <- summary_modelo1$coefficients

resultados <- data.frame(
  Coeficiente = coeficientes1[, 1],
  Error_Estandar = coeficientes1[, 2],
  Valor_z = coeficientes1[, 3],
  p_value = format.pval(coeficientes1[, 4], digits = 4, eps = 1e-5)
)

rownames(resultados) <- rownames(coeficientes1)

resultados %>%
  kable(caption = "Resumen del Modelo Logístico (Ideología, Edad y Género)", digits = 4) %>%
  kableExtra::kable_styling(full_width = FALSE, position = "center") %>%
  kableExtra::kable_classic()
```


Column {data-width=500}{.tabset}
-----------------------------------------------------------------------

### Regresión Logística: Variables Independientes

```{r}
dataperu$AREA <- factor(dataperu$AREA, levels = c(0, 1), labels = c("Urbano", "Rural"))
modelo_logistico2 <- glm(IDEOLOGIA ~ AREA + GENERO + EDAD - 1, 
                        data = dataperu, 
                        family = binomial)

summary_modelo2 <- summary(modelo_logistico2)

coeficientes2 <- summary_modelo2$coefficients

resultados <- data.frame(
  Coeficiente = coeficientes2[, 1],
  Error_Estandar = coeficientes2[, 2],
  Valor_z = coeficientes2[, 3],
  p_value = format.pval(coeficientes2[, 4], digits = 4, eps = 1e-5),
  AIC= round(AIC(modelo_logistico2))
)

rownames(resultados) <- rownames(coeficientes2)

resultados %>%
  kable(caption = "Resumen del Modelo Logístico (Ideología, Área y variables de control)", digits = 4) %>%
  kableExtra::kable_styling(full_width = FALSE, position = "center") %>%
  kableExtra::kable_classic()
```

```{r}
modelo_logistico3 <- glm(IDEOLOGIA ~ VOTO21 + AREA + GENERO + EDAD - 1, 
                        data = dataperu, 
                        family = binomial)

summary_modelo3 <- summary(modelo_logistico3)

coeficientes3 <- summary_modelo3$coefficients

resultados <- data.frame(
  Coeficiente = coeficientes3[, 1],
  Error_Estandar = coeficientes3[, 2],
  Valor_z = coeficientes3[, 3],
  p_value = format.pval(coeficientes3[, 4], digits = 4, eps = 1e-5),
  AIC= round(AIC(modelo_logistico3))
)

rownames(resultados) <- rownames(coeficientes3)

resultados %>%
  kable(caption = "Resumen del Modelo Logístico (Ideología, Voto en Elecciones Generales 2021, Área y variables de control)", digits = 4) %>%
  kableExtra::kable_styling(full_width = FALSE, position = "center") %>%
  kableExtra::kable_classic()
```


5. Análisis factorial {data-icon="fa-solid fa-layer-group"}
===================================== 

Column {data-width=500}{.tabset}
-----------------------------------------------------------------------

### Correlación de las variables de opinión

```{r}
data_sa<- dataperu %>%
  group_by(REGION) %>%
  
  summarise(
    OPI_EDU_p = mean(OPI_EDU, na.rm = TRUE),
    OPI_SAL_p= mean(OPI_SAL, na.rm = TRUE),
    OPI_AGUA_p = mean(OPI_AGUA, na.rm = TRUE),
    indice_satisfaccion = mean(c(OPI_EDU, OPI_SAL, OPI_AGUA), na.rm = TRUE))

data_cor <- data_sa %>%
  select(-REGION,-indice_satisfaccion)

data_cor[] <- lapply(data_cor, function(x) as.numeric(as.character(x)))


data_cor_clean <- data_cor[!apply(data_cor, 1, function(x) any(is.na(x) | is.infinite(x))), ]
```


```{r}
library(ggcorrplot)

library(polycor)
corMatrix <- cor(data_cor_clean, use = "complete.obs", method = "pearson")

ggcorrplot(corMatrix)
```

Column {data-width=500}{.tabset}
-----------------------------------------------------------------------

### Resultado KMO

```{r}
psych::KMO(corMatrix) 
```

### Prueba de matriz de identidad y matriz singular.

Prueba de matriz de identidad:
```{r}
cortest.bartlett(corMatrix,n=nrow(data_cor_clean))$p.value>0.05
```

Prueba de matriz singular:

```{r}
is.singular.matrix(corMatrix)
```


### Cantidad de factores recomendados

```{r}
fa.parallel(data_cor_clean, fa = 'fa',correct = T,plot = F)
```


### Resultados del EFA
```{r, include=FALSE}
fa_result <- fa(data_cor_clean, nfactors = 1, fm = "minres")

as.data.frame(fa_result$scores)
```

```{r}
fa.diagram(fa_result,main = "Resultados del EFA")
```


### Tabla de correlación

```{r}
round(corMatrix,2)  %>%
  kable("html", escape = FALSE, align = "c") %>%
  kable_styling("striped", full_width = FALSE) %>%
  scroll_box(height = "200px", width = "100%")
```

6. Análisis conglomerado {data-icon="fa-solid fa-object-ungroup"}
===================================== 

Column {data-width=500} {.tabset}
-----------------------------------------------------------------------
```{r, include=FALSE}
library(psych)
psych::KMO(corMatrix)
fa_result <- fa(data_cor_clean, nfactors = 1, fm = "minres")

as.data.frame(fa_result$scores)

library(GPArotation)
resfa <- fa(data_cor_clean,
            nfactors = 1,
            cor = 'mixed',
            rotate = "varimax", #oblimin?
            fm="minres")
```


### Datos

```{r}
library(BBmisc)

data_sa[,c(2:4)]=normalize(data_sa[,c(2:4)],method='standardize')

boxplot(normalize(data_sa[,c(2:4)],method='standardize'))
```

```{r, include=FALSE}
cor(data_sa[,c(2:4)])
dataClus=data_sa[,c(2:4)]
row.names(dataClus)=data_sa$REGION
```

```{r, include=FALSE}
library(cluster)
g.dist = daisy(dataClus, metric="gower")
```

### N° de clusters PAM
```{r}
library(factoextra)
fviz_nbclust(dataClus, pam,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F)
```

### N° clusters AGNES

```{r}
fviz_nbclust(dataClus,hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "agnes")
```

### N° clusters DIANA
```{r}
fviz_nbclust(dataClus, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "diana")
```

Column {data-width=500} {.tabset}
-----------------------------------------------------------------------

### Orden clusters PAM

```{r}
library(kableExtra)
set.seed(123)
res.pam=pam(g.dist,2,cluster.only = F)

#nueva columna
dataClus$pam=res.pam$cluster

aggregate(.~ pam, data=dataClus,mean)
```

### Silhouette PAM

```{r}
fviz_silhouette(res.pam,print.summary = F)
```

### Orden clusters AGNES
```{r}
set.seed(123)
library(factoextra)

res.agnes<- hcut(g.dist, k = 2,hc_func='agnes',hc_method = "ward.D")

dataClus$agnes=res.agnes$cluster

aggregate(.~ agnes, data=dataClus,mean)
```

### Silhouette AGNES

```{r}
fviz_silhouette(res.agnes,print.summary = F)
```

### Orden clusters DIANA

```{r}
set.seed(123)
res.diana <- hcut(g.dist, k = 2,hc_func='diana')
dataClus$diana=res.diana$cluster

aggregate(.~ diana, data=dataClus,mean)
```

### Silhouette DIANA

```{r}
fviz_silhouette(res.diana,print.summary = F)
```

7. Conclusiones {data-icon="fa-solid fa-magnifying-glass"}
===================================== 

Row {data-width=400} 
-----------------------------------------------------------------------

### Porcentaje de personas que se identifican con tendencia política de izquierda

```{r}
gauge(63.1, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(40, 60), warning = c(21, 59), danger = c(0, 20)
))
```

### Porcentaje de personas que consideran que su situación económica ha empeorado

```{r}
gauge(61.76, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(0, 20), warning = c(21, 40), danger = c(40, 100)
))
```


### Porcentaje de personas no pertenecientes a Lima que presentan tendencia hacia la izquierda

```{r}
gauge(63.58, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(40, 60), warning = c(21, 59), danger = c(0, 20)
))
```


Row {data-width=400} 
-----------------------------------------------------------------------
### Porcentaje de mujeres que presentan tendencia hacia la derecha

```{r}
gauge(59.89, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(40, 60), warning = c(21, 59), danger = c(0, 20)
))
```

### Porcentaje de personas con mayores ingresos con tendencia hacia la izquierda

```{r}
gauge(38.88, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(40, 60), warning = c(21, 59), danger = c(0, 20)
))
```

### Porcentaje de personas con menores ingresos con tendencia hacia la izquierda

```{r}
gauge(67.57, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(0, 20), warning = c(21, 40), danger = c(40, 100)
))
```